﻿using System;
using System.Collections.Generic;
using System.Text;
using WPFCABShell.$safeprojectname$.Services.Command;

namespace WPFCABShell.$safeprojectname$.Services.Menu
{
	/// <summary>
	/// Represents a menu item added via the <see cref="IMenuService"/>.
	/// </summary>
	public interface IMenuItem
	{
		/// <summary>
		/// Gets the site to which the menu item was added.
		/// </summary>
		string TargetSiteName
		{
			get;
		}

		/// <summary>
		/// Gets the <see cref="ICommand"/> associated with this menu item.
		/// </summary>
		ICommand Command
		{
			get;
		}

		/// <summary>
		/// Gets or sets a parameter to pass when executing the <see cref="Command"/> associated with this menu item.
		/// </summary>
		object CommandParameter
		{
			get;
			set;
		}

		/// <summary>
		/// Gets the site name registered for the menu item, if any.
		/// </summary>
		string SiteName
		{
			get;
		}

		/// <summary>
		/// Gets or sets a value indicating whether the menu item is checked.
		/// </summary>
		bool IsChecked
		{
			get;
			set;
		}

		/// <summary>
		/// Occurs when the submenu of this menu item is opened.
		/// </summary>
		event EventHandler<EventArgs> SubmenuOpened;

		/// <summary>
		/// Occurs when the submenu of this menu item is closed.
		/// </summary>
		event EventHandler<EventArgs> SubmenuClosed;
	}
}
